//package com.inspur.edp.cef.generator.coreGenerator.base.entitygen.resourceinfo;
//
//
//import com.inspur.edp.caf.generator.baseInfo.ParameterInfo;
//import com.inspur.edp.caf.generator.baseInfo.TypeInfo;
//import com.inspur.edp.caf.generator.method.ClassMethodGenerator;
//import com.inspur.edp.cef.core.i18n.I18nResourceUtil;
//import com.inspur.edp.cef.rtgenerator.repositorygen.RepositoryGenUtil;
//import com.inspur.edp.cef.rtgenerator.utils.I18nGenUtil;
//import java.util.ArrayList;
//import lombok.var;
//import org.eclipse.jdt.core.dom.AST;
//import org.eclipse.jdt.core.dom.Block;
//import org.eclipse.jdt.core.dom.Modifier;
//import org.eclipse.jdt.core.dom.ReturnStatement;
//import org.eclipse.jdt.core.dom.Statement;
//import org.eclipse.jdt.core.dom.StringLiteral;
//import org.eclipse.jdt.core.dom.SwitchCase;
//import org.eclipse.jdt.core.dom.SwitchStatement;
//
//public class GetPropEnumDisplayNameMethodGen extends ClassMethodGenerator {
//
//  private static final String FormalParName_propName = "propName";
//  private static final String FormalParName_enumKey = "enumKey";
//  private DataTypeResInfoGenCtx ParentContext;
//
//  public GetPropEnumDisplayNameMethodGen(DataTypeResInfoGenCtx parentContext) {
//    this.ParentContext = parentContext;
//
//  }
//
//  @Override
//  protected boolean getIsOverride() {
//    return true;
//  }
//
//
//  @Override
//  protected String getMethodName() {
//    return "getEnumPropertyDispalyValue";
//  }
//
//
//  @Override
//  protected TypeInfo getReturnType() {
//    return new TypeInfo(String.class);
//  }
//
//  @Override
//  protected ArrayList<Modifier.ModifierKeyword> getAccessModifiers() {
//    return RepositoryGenUtil.createModifierKeywordArray(Modifier.ModifierKeyword.PUBLIC_KEYWORD);
//  }
//
//  @Override
//  protected ArrayList<ParameterInfo> getParameterCollection() {
//    return new ArrayList<ParameterInfo>(java.util.Arrays.asList(new ParameterInfo[]{
//        RepositoryGenUtil.createParameterInfo(String.class, FormalParName_propName),
//        RepositoryGenUtil.createParameterInfo(String.class, FormalParName_enumKey)}));
//  }
//

//  ///#region methodBody
////        方法1-模型显示值
////		public override string GetPropertyDispalyName(string propName)
////		{
////			switch (propName)
////			{
////                //枚举
////				case "key1":
////					switch (enumKey)
////					{
////						case "enumKey1":
////							return GetResourceValue("enumValue1");
////						case "enumKey2":
////							return GetResourceValue("enumValue1");
////						default:
////							throw new Exception("无效枚举");
////					}
////				case "key2":
////                    //非枚举
////					throw new Exception("当前属性不是枚举类型");
////				default:
////					throw new Exception($"无效属性名{propName}");
////			}
////		}
//  @Override
//  protected Block buildMethodBody() {
//    SwitchStatement switchStatement = ast.newSwitchStatement();
//    switchStatement.setExpression(ast.newSimpleName(FormalParName_propName));
//
//    ParentContext.getPropEnumInfos().entrySet().stream().forEach(item -> {
//      switchStatement.statements().add(createCaseStatement(item.getKey()));
//      switchStatement.statements().add(buildPropStatement(item.getKey()));
//    });
//    addImport(I18nResourceUtil.class.getTypeName());
//    /**
//     throw new RuntimeException("XXXXXX"+propName);
//     */
//    I18nGenUtil
//        .getDefaultSection(ast, switchStatement, "当前属性不是枚举字段，或不存在该属性名称", FormalParName_propName);
//
//    Block block = ast.newBlock();
//    block.statements().add(switchStatement);
//    return block;
//  }
//
//  private Statement buildPropStatement(String propName) {
//    var propInfo = ParentContext.getPropInfos().get(propName);
//    SwitchStatement switchStatement = ast.newSwitchStatement();
//    switchStatement.setExpression(ast.newSimpleName(FormalParName_enumKey));
//    ParentContext.getPropEnumInfos().get(propName).entrySet().stream().forEach(item -> {
//      switchStatement.statements().addAll(createReturnStatement(ast, item.getKey(), propName));
//    });
//    /**
//     throw new RuntimeException("XXXXXX"+enumKey);
//     */
//    I18nGenUtil.getDefaultSection(ast, switchStatement, "无效的枚举编号", FormalParName_enumKey);
//
//    return switchStatement;
//  }
//
//
//  /**
//   * case enumKey: return new XXXInfo();
//   *
//   * @return
//   */
//  private ArrayList<Statement> createReturnStatement(AST ast, String enumKey, String propName) {
//    ArrayList<Statement> list = new ArrayList<>();
//    list.add(createCaseStatement(enumKey));
//    var resourceKey = ParentContext.getPropEnumInfos().get(propName).get(enumKey)
//        .getDisplayValueKey();
//    ReturnStatement returnStatement = ParentContext.
//        getParentContext().
//        getProjContext().
//        getModelResInfoGenContex().
//        BuildgetResourceItemValueReturn(ast, resourceKey);
//    list.add(returnStatement);
//    return list;
//  }
//
//  private Statement createCaseStatement(String enumKey) {
//    SwitchCase switchCase1 = ast.newSwitchCase();
//    StringLiteral stringLiteral = ast.newStringLiteral();
//    stringLiteral.setLiteralValue(enumKey);
//    switchCase1.setExpression(stringLiteral);
//    return switchCase1;
//  }
//
//  //
////		 * 非枚举
////		 * case "propName01":
////				throw new Exception(该属性不是枚举类型propName01);
////		 * 枚举
////			case "propName01":
////				return I18nResourceUtil.GetResourceItemValue(key);
////
//  //
////		switch (enumKey)
////		{
////			case "enumKey1":
////			return GetResourceValue("enumValue1");
////			case "enumKey2":
////			return GetResourceValue("enumValue1");
////			default:
////			throw new Exception("无效枚举");
////		}
////
//}